package gedis

//
//import (
//	"context"
//	"time"
//)
//
//type Cmdable interface {
//	Pipeline() Pipeliner
//	Pipelined(fn func(Pipeliner) error) ([]Cmder, error)
//
//	TxPipelined(fn func(Pipeliner) error) ([]Cmder, error)
//	TxPipeline() Pipeliner
//
//	Command(ctx context.Context) *CommandsInfoCmd
//	ClientGetName(ctx context.Context) *StringCmd
//	Echo(message interface{}) *StringCmd
//	Ping(ctx context.Context) *StatusCmd
//	Quit(ctx context.Context) *StatusCmd
//	Del(keys ...string) *IntCmd
//	Unlink(keys ...string) *IntCmd
//	Dump(key string) *StringCmd
//	Exists(keys ...string) *IntCmd
//	Expire(key string, expiration time.Duration) *BoolCmd
//	ExpireAt(key string, tm time.Time) *BoolCmd
//	Keys(pattern string) *StringSliceCmd
//	Migrate(host, port, key string, db int, timeout time.Duration) *StatusCmd
//	Move(key string, db int) *BoolCmd
//	ObjectRefCount(key string) *IntCmd
//	ObjectEncoding(key string) *StringCmd
//	ObjectIdleTime(key string) *DurationCmd
//	Persist(key string) *BoolCmd
//	PExpire(key string, expiration time.Duration) *BoolCmd
//	PExpireAt(key string, tm time.Time) *BoolCmd
//	PTTL(key string) *DurationCmd
//	RandomKey(ctx context.Context) *StringCmd
//	Rename(key, newkey string) *StatusCmd
//	RenameNX(key, newkey string) *BoolCmd
//	Restore(key string, ttl time.Duration, value string) *StatusCmd
//	RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd
//	Sort(key string, sort *Sort) *StringSliceCmd
//	SortStore(key, store string, sort *Sort) *IntCmd
//	SortInterfaces(key string, sort *Sort) *SliceCmd
//	Touch(keys ...string) *IntCmd
//	TTL(key string) *DurationCmd
//	Type(key string) *StatusCmd
//	Append(key, value string) *IntCmd
//	Decr(key string) *IntCmd
//	DecrBy(key string, decrement int64) *IntCmd
//	Get(key string) *StringCmd
//	GetRange(key string, start, end int64) *StringCmd
//	GetSet(key string, value interface{}) *StringCmd
//	Incr(key string) *IntCmd
//	IncrBy(key string, value int64) *IntCmd
//	IncrByFloat(key string, value float64) *FloatCmd
//	MGet(keys ...string) *SliceCmd
//	MSet(values ...interface{}) *StatusCmd
//	MSetNX(values ...interface{}) *BoolCmd
//	Set(key string, value interface{}, expiration time.Duration) *StatusCmd
//	SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd
//	SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd
//	SetRange(key string, offset int64, value string) *IntCmd
//	StrLen(key string) *IntCmd
//
//	GetBit(key string, offset int64) *IntCmd
//	SetBit(key string, offset int64, value int) *IntCmd
//	BitCount(key string, bitCount *BitCount) *IntCmd
//	BitOpAnd(destKey string, keys ...string) *IntCmd
//	BitOpOr(destKey string, keys ...string) *IntCmd
//	BitOpXor(destKey string, keys ...string) *IntCmd
//	BitOpNot(destKey string, key string) *IntCmd
//	BitPos(key string, bit int64, pos ...int64) *IntCmd
//	BitField(key string, args ...interface{}) *IntSliceCmd
//
//	Scan(cursor uint64, match string, count int64) *ScanCmd
//	SScan(key string, cursor uint64, match string, count int64) *ScanCmd
//	HScan(key string, cursor uint64, match string, count int64) *ScanCmd
//	ZScan(key string, cursor uint64, match string, count int64) *ScanCmd
//
//	HDel(key string, fields ...string) *IntCmd
//	HExists(key, field string) *BoolCmd
//	HGet(key, field string) *StringCmd
//	HGetAll(key string) *StringStringMapCmd
//	HIncrBy(key, field string, incr int64) *IntCmd
//	HIncrByFloat(key, field string, incr float64) *FloatCmd
//	HKeys(key string) *StringSliceCmd
//	HLen(key string) *IntCmd
//	HMGet(key string, fields ...string) *SliceCmd
//	HSet(key string, values ...interface{}) *IntCmd
//	HMSet(key string, values ...interface{}) *BoolCmd
//	HSetNX(key, field string, value interface{}) *BoolCmd
//	HVals(key string) *StringSliceCmd
//
//	BLPop(timeout time.Duration, keys ...string) *StringSliceCmd
//	BRPop(timeout time.Duration, keys ...string) *StringSliceCmd
//	BRPopLPush(source, destination string, timeout time.Duration) *StringCmd
//	LIndex(key string, index int64) *StringCmd
//	LInsert(key, op string, pivot, value interface{}) *IntCmd
//	LInsertBefore(key string, pivot, value interface{}) *IntCmd
//	LInsertAfter(key string, pivot, value interface{}) *IntCmd
//	LLen(key string) *IntCmd
//	LPop(key string) *StringCmd
//	LPush(key string, values ...interface{}) *IntCmd
//	LPushX(key string, values ...interface{}) *IntCmd
//	LRange(key string, start, stop int64) *StringSliceCmd
//	LRem(key string, count int64, value interface{}) *IntCmd
//	LSet(key string, index int64, value interface{}) *StatusCmd
//	LTrim(key string, start, stop int64) *StatusCmd
//	RPop(key string) *StringCmd
//	RPopLPush(source, destination string) *StringCmd
//	RPush(key string, values ...interface{}) *IntCmd
//	RPushX(key string, values ...interface{}) *IntCmd
//
//	SAdd(key string, members ...interface{}) *IntCmd
//	SCard(key string) *IntCmd
//	SDiff(keys ...string) *StringSliceCmd
//	SDiffStore(destination string, keys ...string) *IntCmd
//	SInter(keys ...string) *StringSliceCmd
//	SInterStore(destination string, keys ...string) *IntCmd
//	SIsMember(key string, member interface{}) *BoolCmd
//	SMembers(key string) *StringSliceCmd
//	SMembersMap(key string) *StringStructMapCmd
//	SMove(source, destination string, member interface{}) *BoolCmd
//	SPop(key string) *StringCmd
//	SPopN(key string, count int64) *StringSliceCmd
//	SRandMember(key string) *StringCmd
//	SRandMemberN(key string, count int64) *StringSliceCmd
//	SRem(key string, members ...interface{}) *IntCmd
//	SUnion(keys ...string) *StringSliceCmd
//	SUnionStore(destination string, keys ...string) *IntCmd
//
//	XAdd(a *XAddArgs) *StringCmd
//	XDel(stream string, ids ...string) *IntCmd
//	XLen(stream string) *IntCmd
//	XRange(stream, start, stop string) *XMessageSliceCmd
//	XRangeN(stream, start, stop string, count int64) *XMessageSliceCmd
//	XRevRange(stream string, start, stop string) *XMessageSliceCmd
//	XRevRangeN(stream string, start, stop string, count int64) *XMessageSliceCmd
//	XRead(a *XReadArgs) *XStreamSliceCmd
//	XReadStreams(streams ...string) *XStreamSliceCmd
//	XGroupCreate(stream, group, start string) *StatusCmd
//	XGroupCreateMkStream(stream, group, start string) *StatusCmd
//	XGroupSetID(stream, group, start string) *StatusCmd
//	XGroupDestroy(stream, group string) *IntCmd
//	XGroupDelConsumer(stream, group, consumer string) *IntCmd
//	XReadGroup(a *XReadGroupArgs) *XStreamSliceCmd
//	XAck(stream, group string, ids ...string) *IntCmd
//	XPending(stream, group string) *XPendingCmd
//	XPendingExt(a *XPendingExtArgs) *XPendingExtCmd
//	XClaim(a *XClaimArgs) *XMessageSliceCmd
//	XClaimJustID(a *XClaimArgs) *StringSliceCmd
//	XTrim(key string, maxLen int64) *IntCmd
//	XTrimApprox(key string, maxLen int64) *IntCmd
//	XInfoGroups(key string) *XInfoGroupsCmd
//
//	BZPopMax(timeout time.Duration, keys ...string) *ZWithKeyCmd
//	BZPopMin(timeout time.Duration, keys ...string) *ZWithKeyCmd
//	ZAdd(key string, members ...*Z) *IntCmd
//	ZAddNX(key string, members ...*Z) *IntCmd
//	ZAddXX(key string, members ...*Z) *IntCmd
//	ZAddCh(key string, members ...*Z) *IntCmd
//	ZAddNXCh(key string, members ...*Z) *IntCmd
//	ZAddXXCh(key string, members ...*Z) *IntCmd
//	ZIncr(key string, member *Z) *FloatCmd
//	ZIncrNX(key string, member *Z) *FloatCmd
//	ZIncrXX(key string, member *Z) *FloatCmd
//	ZCard(key string) *IntCmd
//	ZCount(key, min, max string) *IntCmd
//	ZLexCount(key, min, max string) *IntCmd
//	ZIncrBy(key string, increment float64, member string) *FloatCmd
//	ZInterStore(destination string, store *ZStore) *IntCmd
//	ZPopMax(key string, count ...int64) *ZSliceCmd
//	ZPopMin(key string, count ...int64) *ZSliceCmd
//	ZRange(key string, start, stop int64) *StringSliceCmd
//	ZRangeWithScores(key string, start, stop int64) *ZSliceCmd
//	ZRangeByScore(key string, opt *ZRangeBy) *StringSliceCmd
//	ZRangeByLex(key string, opt *ZRangeBy) *StringSliceCmd
//	ZRangeByScoreWithScores(key string, opt *ZRangeBy) *ZSliceCmd
//	ZRank(key, member string) *IntCmd
//	ZRem(key string, members ...interface{}) *IntCmd
//	ZRemRangeByRank(key string, start, stop int64) *IntCmd
//	ZRemRangeByScore(key, min, max string) *IntCmd
//	ZRemRangeByLex(key, min, max string) *IntCmd
//	ZRevRange(key string, start, stop int64) *StringSliceCmd
//	ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd
//	ZRevRangeByScore(key string, opt *ZRangeBy) *StringSliceCmd
//	ZRevRangeByLex(key string, opt *ZRangeBy) *StringSliceCmd
//	ZRevRangeByScoreWithScores(key string, opt *ZRangeBy) *ZSliceCmd
//	ZRevRank(key, member string) *IntCmd
//	ZScore(key, member string) *FloatCmd
//	ZUnionStore(dest string, store *ZStore) *IntCmd
//
//	PFAdd(key string, els ...interface{}) *IntCmd
//	PFCount(keys ...string) *IntCmd
//	PFMerge(dest string, keys ...string) *StatusCmd
//
//	BgRewriteAOF(ctx context.Context) *StatusCmd
//	BgSave(ctx context.Context) *StatusCmd
//	ClientKill(ipPort string) *StatusCmd
//	ClientKillByFilter(keys ...string) *IntCmd
//	ClientList(ctx context.Context) *StringCmd
//	ClientPause(dur time.Duration) *BoolCmd
//	ClientID(ctx context.Context) *IntCmd
//	ConfigGet(parameter string) *SliceCmd
//	ConfigResetStat(ctx context.Context) *StatusCmd
//	ConfigSet(parameter, value string) *StatusCmd
//	ConfigRewrite(ctx context.Context) *StatusCmd
//	DBSize(ctx context.Context) *IntCmd
//	FlushAll(ctx context.Context) *StatusCmd
//	FlushAllAsync(ctx context.Context) *StatusCmd
//	FlushDB(ctx context.Context) *StatusCmd
//	FlushDBAsync(ctx context.Context) *StatusCmd
//	Info(section ...string) *StringCmd
//	LastSave(ctx context.Context) *IntCmd
//	Save(ctx context.Context) *StatusCmd
//	Shutdown(ctx context.Context) *StatusCmd
//	ShutdownSave(ctx context.Context) *StatusCmd
//	ShutdownNoSave(ctx context.Context) *StatusCmd
//	SlaveOf(host, port string) *StatusCmd
//	Time(ctx context.Context) *TimeCmd
//	DebugObject(key string) *StringCmd
//	ReadOnly(ctx context.Context) *StatusCmd
//	ReadWrite(ctx context.Context) *StatusCmd
//	MemoryUsage(key string, samples ...int) *IntCmd
//
//	Eval(script string, keys []string, args ...interface{}) *Cmd
//	EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd
//	ScriptExists(hashes ...string) *BoolSliceCmd
//	ScriptFlush(ctx context.Context) *StatusCmd
//	ScriptKill(ctx context.Context) *StatusCmd
//	ScriptLoad(script string) *StringCmd
//
//	Publish(channel string, message interface{}) *IntCmd
//	PubSubChannels(pattern string) *StringSliceCmd
//	PubSubNumSub(channels ...string) *StringIntMapCmd
//	PubSubNumPat(ctx context.Context) *IntCmd
//
//	ClusterSlots(ctx context.Context) *ClusterSlotsCmd
//	ClusterNodes(ctx context.Context) *StringCmd
//	ClusterMeet(host, port string) *StatusCmd
//	ClusterForget(nodeID string) *StatusCmd
//	ClusterReplicate(nodeID string) *StatusCmd
//	ClusterResetSoft(ctx context.Context) *StatusCmd
//	ClusterResetHard(ctx context.Context) *StatusCmd
//	ClusterInfo(ctx context.Context) *StringCmd
//	ClusterKeySlot(key string) *IntCmd
//	ClusterGetKeysInSlot(slot int, count int) *StringSliceCmd
//	ClusterCountFailureReports(nodeID string) *IntCmd
//	ClusterCountKeysInSlot(slot int) *IntCmd
//	ClusterDelSlots(slots ...int) *StatusCmd
//	ClusterDelSlotsRange(min, max int) *StatusCmd
//	ClusterSaveConfig(ctx context.Context) *StatusCmd
//	ClusterSlaves(nodeID string) *StringSliceCmd
//	ClusterFailover(ctx context.Context) *StatusCmd
//	ClusterAddSlots(slots ...int) *StatusCmd
//	ClusterAddSlotsRange(min, max int) *StatusCmd
//
//	GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd
//	GeoPos(key string, members ...string) *GeoPosCmd
//	GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
//	GeoRadiusStore(key string, longitude, latitude float64, query *GeoRadiusQuery) *IntCmd
//	GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
//	GeoRadiusByMemberStore(key, member string, query *GeoRadiusQuery) *IntCmd
//	GeoDist(key string, member1, member2, unit string) *FloatCmd
//	GeoHash(key string, members ...string) *StringSliceCmd
//}
